
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОписаниеПеременных

Перем ТаблицаОшибок;
Перем ТаблицаЗамен;
Перем УстанавливаемаяДиректива;

#КонецОбласти

#Область ПрограммныйИнтерфейс

Процедура Открыть(Парсер, Параметры) Экспорт
	
	
	Если Параметры = Неопределено Тогда
		ВызватьИсключение "Не указаны параметры плагина 'УстановкаДирективКомпиляцииУМетодовМодуля'";
	КонецЕсли; 
	
	ТаблицаОшибок = Парсер.ТаблицаОшибок();
	ТаблицаЗамен = Парсер.ТаблицаЗамен();
	УстанавливаемаяДиректива = Параметры;
	
КонецПроцедуры

Функция Закрыть() Экспорт
	Возврат Неопределено;
КонецФункции

Функция Подписки() Экспорт
	Подписки = Новый Массив;
	Подписки.Добавить("ПосетитьОбъявлениеМетода");

	Возврат Подписки;
КонецФункции

#Область РеализацияПодписок

Процедура ПосетитьОбъявлениеМетода(ОбъявлениеМетода) Экспорт
	Если ОбъявлениеМетода.Сигнатура.Директивы.Количество() > 0 Тогда
		Возврат;
	КонецЕсли;
	
	СтрокаВставки = УстанавливаемаяДиректива+Символы.ПС;
	Вставка(СтрокаВставки, ОбъявлениеМетода.Начало.Позиция);
КонецПроцедуры
#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

//@skip-check module-unused-method
Процедура Ошибка(Текст, Начало, Конец = Неопределено, ЕстьЗамена = Ложь)
	Ошибка = ТаблицаОшибок.Добавить();
	Ошибка.Источник = "ИмяЭтогоПлагина";
	Ошибка.Текст = Текст;
	Ошибка.ПозицияНачала = Начало.Позиция;
	Ошибка.НомерСтрокиНачала = Начало.НомерСтроки;
	Ошибка.НомерКолонкиНачала = Начало.НомерКолонки;
	Если Конец = Неопределено Или Конец = Начало Тогда
		Ошибка.ПозицияКонца = Начало.Позиция + Начало.Длина;
		Ошибка.НомерСтрокиКонца = Начало.НомерСтроки;
		Ошибка.НомерКолонкиКонца = Начало.НомерКолонки + Начало.Длина;
	Иначе
		Ошибка.ПозицияКонца = Конец.Позиция + Конец.Длина;
		Ошибка.НомерСтрокиКонца = Конец.НомерСтроки;
		Ошибка.НомерКолонкиКонца = Конец.НомерКолонки + Конец.Длина;
	КонецЕсли;
	Ошибка.ЕстьЗамена = ЕстьЗамена;
КонецПроцедуры

//@skip-check module-unused-method
Процедура Замена(Текст, Начало, Конец = Неопределено)
	НоваяЗамена = ТаблицаЗамен.Добавить();
	НоваяЗамена.Источник = "ИмяЭтогоПлагина";
	НоваяЗамена.Текст = Текст;
	НоваяЗамена.Позиция = Начало.Позиция;
	Если Конец = Неопределено Тогда
		НоваяЗамена.Длина = Начало.Длина;
	Иначе
		НоваяЗамена.Длина = Конец.Позиция + Конец.Длина - Начало.Позиция;
	КонецЕсли;
КонецПроцедуры

Процедура Вставка(Текст, Позиция)
	НоваяЗамена = ТаблицаЗамен.Добавить();
	НоваяЗамена.Источник = "ИмяЭтогоПлагина";
	НоваяЗамена.Текст = Текст;
	НоваяЗамена.Позиция = Позиция;
	НоваяЗамена.Длина = 0;
КонецПроцедуры
#КонецОбласти


#КонецЕсли






